GodotのCollision LayerとCollision Maskの使い分け
作成日
更新日
Godot では、物理衝突(当たり判定)の制御に「Collision Layer」と「Collision Mask」という2つの概念が用いられる。
これは、オブジェクト同士が「何と」「どうぶつかるか」を定義するためのシステム。
Collision Layer(レイヤー)
- 意味:このオブジェクトがどの層に存在しているか
- イメージ:名札をつけて「自分はこのレイヤーにいるよ!」と宣言する
- 完全に受け身
- 例:敵が Enemy レイヤーに属している
Collision Mask(マスク)
- 意味:このオブジェクトがどのレイヤーのオブジェクトと衝突したいか
- イメージ:双眼鏡をのぞいて「このレイヤーにいるやつを探すぞ!」という積極的な姿勢
- 能動的に衝突対象を探す
- 例:プレイヤーが
Enemy
をマスクしている → 敵と衝突したい
実用パターン
オブジェクト | Layer(どこにいるか) | Mask(誰を探すか) |
---|---|---|
プレイヤー | Player | Terrain, Enemy |
敵 | Enemy | Player |
弾(プレイヤー) | Bullet | Enemy |
地形 | Terrain | —(何も見ない) |
まとめ
- Layer → 見つけられる側(ラベル)
- Mask → 探す側(レーダー)
「レイヤー = このノードが所属するグループ」
「マスク = このノードが見ようとしているグループ」
#ChatGPTより引用

公開日
更新日